在做搜尋條件的時候,有時候想找尋某個檔案,但只記得他的內容關鍵字,這時候正規表示法就非常方便,下關鍵字達到找尋最接近的結果。
grep 全名為 global regular expression print。
[root@localhost ~]# grep [參數] [關鍵字] [檔案或目錄]
-A [行數] (After)顯示符合的那一行,同時顯示該行之後的內容。-a 以二進位的檔案作為搜尋。-B [行數] (Before)顯示符合的那一行,同時顯示該行即之前的內容。-b 顯示符合條件的結果,總共多少 bytes。-C [行數] (Context)顯示符合的那一行及前後內容。-c 顯示符合條件的總行數。-d [動作] 查詢目錄(忽略檔案)。-E (Extend)使用正則表示式搜尋。-e [符合條件的內容] 指定搜尋的檔案,通常用在避免partern用-開始。-F 符合條件的內容作為固定字串的列表。-f [範本檔案] 指定符合條件的內容,並且將每一行套用樣式。-G 將樣式視為基本的正規表示法。-H 在每個符合樣式的行,前面加上符合的檔案名稱或路徑。-h 同 -H ,但輸出不顯示路徑。-i (ignore case)不區分大小寫。-L 不符合條件內容的檔案名稱。-l 符合條件內容的檔案名稱。-n (number)顯示符合條件的行數及路徑。-o 顯示被模式比對到的條件。-q 不顯示任何結果。-r 遞迴,讀取每個目錄底下的檔案,同 -d recsuse。-s 不顯示錯誤訊息或無法讀取的訊息。-V (Version) 顯示 grep 版本資訊。-v (recursive)顯示不符合條件的結果。-w 只顯示文字完全符合的結果。-x 只顯示全列都符合的列--help 尋求幫助。
正規表示法中的特殊符號,與原意思不相同,他們都有各自使用方式。
| 特殊符號 | 說明 |
|---|---|
| ^ | 搜尋規則前的「起頭」。意思代表「非」。 |
| $ | 搜尋規則後的「結尾」。 |
| . | 任意一個字元。 |
| * | 任意字元或任意字串,長度可以為0 |
| .* | 一起使用代表任意字串。 |
| \ | 跳脫字符,將字串中特殊符號的動作去除。 |
| + | 一個或多個重複字元 |
| ? | 匹配正則表達式的結束行 |
| (n,m) | 連續 n 個 到 m個的字串。 |
| < | 從比對正則表達式的行開始。 |
| > | 到比對正則表達式的行結束。 |
| [] | 比對範圍內的字元或字串。 |
| [^] | 比對不再指定範圍內的字元。 |
| [-] | 範圍 ;如[A-Z]即A,B,C一直到Z都符合要求 |
| 特殊符號 | 代表意義 |
|---|---|
| [:alnum:] | 英文大小寫字元及數字,亦即 0-9, A-Z, a-z |
| [:alpha:] | 任何英文大小寫字元,亦即 A-Z , a-z |
| [:blank:] | 空白鍵與 [Tab] 按鍵兩者 |
| [:cntrl:] | 鍵盤上面的控制按鍵,亦即包括 CR, LF, Tab, Del.. 等等 |
| [:digit:] | 數字而已,亦即 0-9 |
| [:graph:] | 除了空白字元 (空白鍵與 [Tab] 按鍵) 外的其他所有按鍵 |
| [:lower:] | 小寫字元,亦即 a-z |
| [:print:] | 任何可以被列印出來的字元 |
| [:punct:] | 標點符號 (punctuation symbol),亦即:" ' ? ! ; : # $... |
| [:upper:] | 大寫字元,亦即 A-Z |
| [:space:] | 任何會產生空白的字元,包括空白鍵, [Tab], CR 等等 |
| [:xdigit:] | 16 進位的數字類型,因此包括: 0-9, A-F, a-f 的數字與字元 |
多檔案或目錄搜尋
[root@localhost ~]# grep [參數] [關鍵字] [檔案或目錄1] [檔案或目錄2] [檔案或目錄3] ...
搜尋的關鍵字,以顏色特別標註 --color
[root@localhost ~]# grep [參數] [關鍵字] --color [檔案或目錄]
遞迴尋找 root 目錄下的檔案,須符合 美女的字串。
[root@localhost ~]# grep -r "美女" /root/
/root/demo.sh: echo "美女您好"